package main

import (
	"fmt"
	"net"
)

//讲解net包中的错误类型

//type Error interface {
//	error      //错误
//	Timeout() bool   // Is the error a timeout? 该错误是时间超时错误吗？
//	Temporary() bool // Is the error temporary? 这个错误是一个临时错误吗？
//}
//任何实现了error接口中方法的结构体都实现了网络error
//实现了Error接口的结构体有:
//1.AddrError 网络地址错误
//2.DNSConfigError DNS配置错误，表示在读取机器DNS配置过程中出现的错误
//3.DNSError    DNS错误，表示DNS查询错误
//4.InvalidAddrError  无效地址错误
//5.OpError        操作错误，OpError是在net包中经常被用刀的一个函数，它描述一个错误的操作，网络类型以及地址。
//6.ParseError     解析错误，ParseError表示一个格式错误的字符串.
//7.UnknownNetworkError  未知网络错误

func main() {
	dnserror := net.DNSError{
		Err:       "dns error",
		Name:      "dnserr",
		Server:    "dns search",
		IsTimeout: true,
	}
	fmt.Println(dnserror.Error())     //lookup dnserr on dns search: dns error
	fmt.Println(dnserror.Temporary()) //true
	fmt.Println(dnserror.Timeout())   //true
	fmt.Println(dnserror.Server)      //dns search
	fmt.Println(dnserror.Err)         //dns error
	fmt.Println(dnserror.Name)        //dnserr
	fmt.Println(dnserror.IsTimeout)   //true
}
